﻿using System.Collections.Specialized;
using System.IO;
using System.Xml;
using System.Xml.Linq;
using Microsoft.SharePoint.Utilities;

namespace ZhukBlogLinqExamples.Model.Meta
{
    /// <summary>
    /// Иконки для документов из файла DOCICON.XML
    /// </summary>
    public static class DocumentIcons
    {
        private static NameValueCollection ExtensionImages { get; set; }

        static DocumentIcons()
        {
            ExtensionImages = new NameValueCollection();
            // Путь к файлу docicon.xml
            var dociconPath = SPUtility.GetGenericSetupPath(@"template\xml") + @"\docicon.xml";
            var fi = new FileInfo(dociconPath);
            using (var stream = fi.OpenText())
            {
                var doc = XDocument.Load(stream);
                var icons = doc.Element("DocIcons");
                var byExt = icons.Element("ByExtension");
                foreach (var ext in byExt.Elements())
                {
                    var key = ext.Attribute("Key").Value;
                    var val = ext.Attribute("Value").Value;
                    ExtensionImages.Add(key, "/_layouts/images/" + val);
                }
            }
        }

        /// <summary>
        /// Получение иконки для расширения файла
        /// </summary>
        /// <param name="extension">Расширение без '.'</param>
        /// <returns>URL-адрес картинки</returns>
        public static string GetIconUrl(string extension)
        {
            return ExtensionImages[extension] ?? "/_layouts/images/ICGEN.GIF";
        }
    }
}
